// XUser_Logic.cpp: implementation of the XUser_Logic class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "XUser_Logic.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

XUser_Logic::XUser_Logic()
{

}

XUser_Logic::~XUser_Logic()
{
//	m_users.clear();
}

void XUser_Logic::AddUser(SOCKET sock, XEIM_User* pUser)
{
	m_users.insert(pair<SOCKET, XEIM_User*>(sock, pUser));
}

XEIM_User *XUser_Logic::GetUser(SOCKET sock)
{
	return m_users[sock];
}

void XUser_Logic::RemoveUser(SOCKET sock)
{
	m_users.erase(sock);
}

int XUser_Logic::GetSize()
{
	return m_users.size();
}

SOCKET XUser_Logic::GetSocket(const char *szUser)
{
	map<SOCKET, XEIM_User*>::iterator imap;
	for (imap=m_users.begin();
		imap!=m_users.end(); ++imap)
	{
		if (! strcmp(imap->second->GetUID(), szUser))
		{
			return imap->first;
		}
	}

	return 0;
}

BOOL XUser_Logic::SocketExist(SOCKET sock)
{
	return m_users.end() != m_users.find(sock);
}
